home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************************
- *
- * OSLHelpers.h
- *
- * Functions related to supporting the OSL suites
- *
- ****************************************************************************/
-
- #ifndef __OSLHELPERS__
- #define __OSLHELPERS__
-
- #include <AEObjects.h>
- #include <stdarg.h>
- #include <AERegistry.h>
-
- #include "Structs.h"
-
- // ----------------------------------------------------------------------------
- // define our unique property codes
- // These must also be defined in the 'aete' resource, and they should
- // also be added to the TMPL resource that Resourcer uses for the aete parsing.
- // The leading 'p' indicates a property, and I use a capital 2nd letter
- // because Apple reserves all-lowercase types for its own use.
-
- #define pObjectType 'pObT'
- #define pProperties 'qpro' // enum is from Apple, but they forgot to define pProperties
-
- #define pWidth 'pWth' // the width of a graphic object
- #define pHeight 'pHth' // the height of a graphic object
- #define pLocation 'pLcn' // the upper left corner of the object's bounding box
-
- // Stroke extensions
-
- #define pStrokeSize 'pSSz' // "stroke size"
- #define pStrokeColor 'pSCo' // "stroke color"
-
- // Windows
- #define pTitle 'pTit'
- #define pIsModeless 'pNMo'
- #define pIsMovableModal 'pMMo'
- #define pIsSuspended 'pSus'
- #define pIsPalette 'pPal'
- #define pIsDialog 'pDlg'
-
- // Application
-
- #define pFreeMemory 'pMem'
- #define pLargestFreeBlock 'pLFB'
- #define pTicks 'pTic'
-
- // Miscellaneour Suite extra events
-
- #define kAEPlaySound 'plsn'
- #define kAESay 'SAY '
-
- //---------------------------------------------------------------------------
-
- typedef struct ColorRecord
- {
- char * name;
- DescType code;
- RGBColor rgbValue;
- } ColorRecord;
-
- Boolean GetColorRecordByName (char *name, ColorRecord *colorRecord);
- Boolean GetColorRecordByCode (DescType code, ColorRecord *colorRecord);
- Boolean GetColorRecordByRGB (RGBColor rgbValue, ColorRecord *colorRecord);
-
- //---------------------------------------------------------------------------
-
- OSErr GetMissingParams (AppleEvent* appleEvent);
- void ReportError (AppleEvent* reply, long err);
-
- //---------------------------------------------------------------------------
- // Extract AEDesc data and store into native data types
-
- OSErr DescToDescType (const AEDesc *desc, DescType* descType);
- OSErr DescToBoolean (const AEDesc* desc, Boolean* aBoolean);
-
- OSErr DescToShort (const AEDesc* desc, short* aShort);
- OSErr DescToLong (const AEDesc* desc, long* aLong);
- OSErr DescToFloat (const AEDesc* desc, float* aFloat);
- OSErr DescToFixed (const AEDesc* desc, Fixed* aFixed);
- OSErr DescToShortDouble (const AEDesc* desc, short double* aFloat);
-
- OSErr DescToPoint (const AEDesc* desc, Point* aPoint);
- OSErr DescToRect (const AEDesc* desc, Rect* aRect);
-
- OSErr DescToRGBColor (const AEDesc* desc, RGBColor* aRGBColor);
-
- OSErr DescToPString (const AEDesc* desc, Str255 aPString, short maxLength);
- OSErr DescToTextHandle (const AEDesc* desc, Handle *text);
- OSErr DescToOSARange (const AEDesc *desc, short *start, short *end);
-
- //---------------------------------------------------------------------------
- // Token-related Helper functions
- //---------------------------------------------------------------------------
-
- DescType ExtractDispatchClassFromToken (const AEDesc *token);
- DescType ExtractObjectClassFromToken (const AEDesc *token);
- Boolean ExtractUsePropertyCodeFromToken (const AEDesc *token); // emulated
- DescType ExtractPropertyCodeFromToken (const AEDesc *token);
- long ExtractDocumentNumberFromToken (const AEDesc *token);
- long ExtractElementNumberFromToken (const AEDesc *token);
- WindowPtr ExtractWindowPtrFromToken (const AEDesc *token);
-
- OSErr GetDocumentReferenceFromToken (const AEDesc *token, DocumentReference *document);
- OSErr GetElementReferenceFromToken (const AEDesc *token, ElementReference *element);
-
- //----------------------------------------------------------------------------------
-
- OSErr ExtractKeyDataParameter (const AppleEvent *appleEvent, AEDesc *data);
- OSErr ResolveObjectSpecifier (const AEDesc *source, AEDesc *data);
- OSErr ExtractData (const AEDesc *sourceDesc, AEDesc *data);
-
- // ----------------------------------------------------------------------------------------
- // Callback & Coercion support
- // ----------------------------------------------------------------------------------------
-
- Boolean InstallCoercionHandlers (void);
- Boolean InstallObjectCallbackFunctions (void);
-
- //----------------------------------------------------------------------------------
- // Object Specifier Helpers for supported objects
- //----------------------------------------------------------------------------------
-
-
- OSErr CreateDocumentOSpec (DocumentReference document, AEDesc *ospec);
-
- OSErr CreateElementOSpec (DocumentReference document, ElementReference element, AEDesc *ospec);
- OSErr CreateElementUniqueIDOSpec (DocumentReference document, ElementReference element, AEDesc *ospec);
-
- OSErr CreateGraphicObjectOSpec (DocumentReference document, ElementReference element, AEDesc *ospec);
- OSErr CreateGraphicGroupMemberOSpec (DocumentReference document, ElementReference element, ElementReference subElement, AEDesc *ospec);
-
- OSErr CreateRangeDescriptorOSpec (const AEDesc* container, DescType desiredClass, long index1, long index2, AEDesc *ospec);
-
- //----------------------------------------------------------------------------------
-
- void ExamineOSpec (AEDesc *ospec);
- void ExamineAEResolveError (OSErr errorFromAEResolve);
-
- //----------------------------------------------------------------------------------
-
- Boolean TokenContainsTokenList (AEDesc *token);
- OSErr GetFirstNonListToken (AEDesc *token, AEDesc *result);
-
- OSErr FlattenAEList (AEDescList *deepList, AEDescList *flatList);
-
- //----------------------------------------------------------------------------------
-
- Boolean EqualRGB (RGBColor colorA, RGBColor colorB);
-
- //----------------------------------------------------------------------------------
-
- Boolean InstallCoercionHandlers (void);
-
- //----------------------------------------------------------------------------------
-
- OSErr NormalizeAbsoluteIndex (const AEDesc *keyData, long *index, long maxIndex, Boolean *isAllItems);
- OSErr ProcessFormRange (AEDesc *keyData, AEDesc *startObject, AEDesc *stopObject);
-
- //----------------------------------------------------------------------------------
-
- #endif
-